/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vista;

import daoBeans.conexionMySql;
import daoBeans.daoEmpresa;
import java.sql.Connection;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import modelo.Empresa;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Andrés Peñuela
 */
@ManagedBean
@SessionScoped
public class crudEmpresasBean {

    private String tipo;
    private String nit;
    private String nombre;
    private String padre;
    private String empresa;
    private conexionMySql sql = new conexionMySql();
    private Connection mysql = sql.comenzarDb();
    private daoEmpresa daoe = new daoEmpresa(mysql);
    private Map<String, String> listaempresas = new HashMap<String, String>();
    private Map<String, String> resultados = new HashMap<String, String>();
    private List<String> resultad = new ArrayList<String>();
    private Empresa[] empresas;
    private Empresa[] empresasPrueba = new Empresa[4];
    
    
    

    public crudEmpresasBean() {
        
        
        empresasPrueba[0] = new Empresa ("Unalsoft", "5675433", "getnivelinferior", "getpadre");
        empresasPrueba[1] = new Empresa ("D.H.D Soft", "987655", "getnivelinferior", "getpadre");
        empresasPrueba[2] = new Empresa ("Soteind", "005656", "getnivelinferior", "getpadre");
        empresasPrueba[3] = new Empresa ("Ktavosoft", "9876556", "getnivelinferior", "getpadre");
        
        
        listaempresas.put(empresasPrueba[0].getNombre(),empresasPrueba[0].getNombre());
        listaempresas.put(empresasPrueba[1].getNombre(),empresasPrueba[1].getNombre());
        listaempresas.put(empresasPrueba[2].getNombre(),empresasPrueba[2].getNombre());
        listaempresas.put(empresasPrueba[3].getNombre(),empresasPrueba[3].getNombre());
     
        

    }

    public void buscar() {

        ArrayList<Empresa> rsl = new ArrayList<Empresa>();
        Empresa u = new Empresa();
        resultad.clear();

        if (getNombre().equals("") && getNit().equals("")) {
            rsl = daoe.buscarEmpresaTipo(getTipo());
        } else if (!getNit().equals("")) {
            u = daoe.buscarEmpresaNIT(getNit());
        } else if (!getNombre().equals("")) {

            u = daoe.buscarEmpresaNombre(getNombre());

        }

        Iterator<Empresa> us = rsl.iterator();

        if (rsl.isEmpty() && !u.getNombre().isEmpty()) {
            resultad.add(u.getNombre());
        } else if (!rsl.isEmpty()) {
            Iterator<Empresa> it = rsl.listIterator();
            while (it.hasNext()) {
                u = it.next();
                resultad.add(u.getNit());
            }
        } else {
            resultad.add("");
        }

    }

    public void crear() {
        Empresa u;
        //set padre tipo 
        //setPadre();
        
        u = new Empresa(getNombre(), getNit(), getTipo(), getPadre());
        daoe.crearEmpresa(u);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage("username", new FacesMessage(FacesMessage.SEVERITY_WARN, "Crear Empresa", "Empresa creada correctamente"));
    }

    public void elminar() {
        daoe.eliminarEmpresa(getNit());
    }

    public void limpiar() {
        resultad.clear();
    }

    public daoEmpresa getDaoe() {
        return daoe;
    }

    public void setDaoe(daoEmpresa daoe) {
        this.daoe = daoe;
    }

    public Empresa[] getEmpresas() {
        return empresas;
    }

    public void setEmpresas(Empresa[] empresas) {
        this.empresas = empresas;
    }

    public Map<String, String> getListaempresas() {
        return listaempresas;
    }

    public void setListaempresas(Map<String, String> listaempresas) {
        this.listaempresas = listaempresas;
    }

    public Connection getMysql() {
        return mysql;
    }

    public void setMysql(Connection mysql) {
        this.mysql = mysql;
    }

    public String getNit() {
        return nit;
    }

    public void setNit(String nit) {
        this.nit = nit;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getPadre() {
        return padre;
    }

    public void setPadre(String padre) {
        this.padre = padre;
    }

    public List<String> getResultad() {
        return resultad;
    }

    public void setResultad(List<String> resultad) {
        this.resultad = resultad;
    }

    public Map<String, String> getResultados() {
        return resultados;
    }

    public void setResultados(Map<String, String> resultados) {
        this.resultados = resultados;
    }

    public conexionMySql getSql() {
        return sql;
    }

    public void setSql(conexionMySql sql) {
        this.sql = sql;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = empresa;
    }
}